package protect.week04;

import java.util.Arrays;
import java.util.List;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/9/23 10:47
 * @package protect.week04
 * @description 转变日期格式
 *
 * 给你一个字符串 date ，它的格式为 Day Month Year ，其中：
 *
 * Day 是集合 {"1st", "2nd", "3rd", "4th", ..., "30th", "31st"} 中的一个元素。
 * Month 是集合 {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"} 中的一个元素。
 * Year 的范围在 ​[1900, 2100] 之间。
 * 请你将字符串转变为 YYYY-MM-DD 的格式，其中：
 *
 * YYYY 表示 4 位的年份。
 * MM 表示 2 位的月份。
 * DD 表示 2 位的天数。
 *  
 *
 * 示例 1：
 *
 * 输入：date = "20th Oct 2052"
 * 输出："2052-10-20"
 * 示例 2：
 *
 * 输入：date = "6th Jun 1933"
 * 输出："1933-06-06"
 * 示例 3：
 *
 * 输入：date = "26th May 1960"
 * 输出："1960-05-26"
 *  
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/reformat-date
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

public class Ch04_ReformatDate {

    public String reformatDate(String date) {
        // 切割字符串
        String[] s = date.split(" ");
        String year = s[2];
        String month = s[1];
        String day = s[0];

        // 天数补0，且截取数组
        if (day.length() == 3){
            day = "0" + day;
        }
         day = day.substring(0, 2);

        // 获取月份
        String[] months = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
        List<String> monthList = Arrays.asList(months);
        month = monthList.indexOf(month)+1 + "";
        if (month.length() == 1){
            month = "0" + month;
        }

        return String.format("%s-%s-%s",year,month,day);
    }

    public static void main(String[] args) {
        Ch04_ReformatDate ch04_reformatDate = new Ch04_ReformatDate();
        System.out.println(ch04_reformatDate.reformatDate("20th Oct 2052"));
    }
}
